Creating three dimensional models with acceleration data

ABSTRACT

Obtaining physical model data for CAD model generation with a process that includes: receiving a first acceleration-based path data set including acceleration data for an accelerometer device as it was traced over a first path along the surface of a physical object, converting the first acceleration-based path data set to a first position-based data set including position data for the accelerometer as it was traced over the first path along the surface of the physical object, and generating a three dimensional object model data set based, at least in part on the position data of the first position-based data set.

FIELD OF THE INVENTION

The present invention relates generally to the field of threedimensional (3D) computer graphics, and more particularly to generating3D models with acceleration data.

BACKGROUND OF THE INVENTION

It is known that acceleration can be used to calculate the position (ordisplacement) of an object, and this is often done by the calculusoperation called integration. If an acceleration history of an object isknown, and, further, the position of that object in at least one pointin time (for example, a starting point position) is known then completeposition history information for the object's path in three dimensionalspace can be calculated based on the acceleration history. This type ofcomplete positional history will herein be referred to as a “locatedpath.” On the other hand, if no reference positions are known for theobject, but, rather, only acceleration history then a positional pathgeometry can be determined, but not the position and/or angularorientation of the path in three dimensional space. This type of morelimited positional history will herein be referred to as a “relativepath.” In three dimensional space, objects have six degrees of freedomof movement/constraint (three translational and three rotational).However, some systems only require consideration of some sub-set of thesix degrees to form a useful located or relative path. An accelerometeris defined herein as the category of devices that measure acceleration,over time, of the accelerometer device itself, with respect to at leastone degree of freedom/constraint.

3D modeling and computer aided drafting is used in many disciplines andcan be used for many different purposes including: (i) reverseengineering; (ii) development; and/or (iii) problem solving. In 3Dcomputer graphics, 3D modeling is the process of developing amathematical representation of any three-dimensional surface of anobject (either inanimate or living) via specialized software. Theproduct is called a 3D model. It can be displayed as a two-dimensionalimage through a process called 3D rendering or used in a computersimulation of physical phenomena. The model can also be physicallycreated using 3D printing devices. Current systems for 3D modeling areexpensive, large, and complex.

SUMMARY

A computer program product is presented for obtaining physical modeldata for CAD model generation including: collecting a reference positionas a start point responsive to a start point indicator; recording a timestamp associated with a time when the start point indicator wasgenerated; collecting acceleration data generated by an accelerometer byfollowing a first path on a physical surface of an object with a devicein contact with the physical surface, the device including theaccelerometer; recording a second time stamp associated with a time whenan end point indicator is generated; creating a path dataset includingthe acceleration data, the start point, and the first and second timestamps; determining that no additional path will be followed byreceiving a user input indicating that no additional paths will betraced; converting the path dataset to a position dataset including aset of sequential positions corresponding to positions of the devicewhile following the first path; and generating a three-dimensionalobject model based on the position dataset, the three-dimensional objectmodel data set including data to represent the object as a CAD model.The device is configured to determine the acceleration data and thereference position. The start point indicator is generated by a usertouching a touch screen of the device. The end point indicator isgenerated when a user no longer touches the touch screen of the device.The acceleration data includes acceleration-type motion data.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

FIG. 1 is a schematic view of a first embodiment of a networkedcomputers system according to the present invention;

FIG. 2A is a schematic view of a server computer sub-system portion ofthe first embodiment networked computers system;

FIG. 2B is a schematic view of a smart phone sub-system portion of thefirst embodiment networked computers system;

FIG. 3 is a flowchart showing a process performed, at least in part, bythe first embodiment networked computers system;

FIG. 4A is a schematic view of a software portion of the server computersub-system of FIG. 2A;

FIG. 4B is a schematic view of a software portion of the smart phonesub-system of FIG. 2B;

FIG. 5 is an illustration of a perimeter created from scanning aphysical object according to an embodiment of the present invention;

FIG. 6 is an illustration of the use of a cell phone according to anembodiment of the present invention; and

FIG. 7 is an illustration of an add-on device for a cell phone for usein a method that practices an embodiment of the present invention.

DETAILED DESCRIPTION

This Detailed Description section is divided into the followingsub-sections: (i) The Hardware and Software Environment; (ii) FirstEmbodiment; (iii) Further Comments and/or Embodiments; and (iv)Definitions.

I. The Hardware and Software Environment

As will be appreciated by one skilled in the art, aspects of the presentinvention may be embodied as a system, method or computer programproduct. Accordingly, aspects of the present invention may take the formof an entirely hardware embodiment, an entirely software embodiment(including firmware, resident software, micro-code, etc.) or anembodiment combining software and hardware aspects that may allgenerally be referred to herein as a “circuit,” “module” or “system.”Furthermore, aspects of the present invention may take the form of acomputer program product embodied in one or more computer-readablemedium(s) having computer readable program code/instructions embodiedthereon.

Any combination of computer-readable media may be utilized.Computer-readable media may be a computer-readable signal medium or acomputer-readable storage medium. A computer-readable storage medium maybe, for example, but not limited to, an electronic, magnetic, optical,electromagnetic, infrared, or semiconductor system, apparatus, ordevice, or any suitable combination of the foregoing. More specificexamples (a non-exhaustive list) of a computer-readable storage mediumwould include the following: an electrical connection having one or morewires, a portable computer diskette, a hard disk, a random access memory(RAM), a read-only memory (ROM), an erasable programmable read-onlymemory (EPROM or Flash memory), an optical fiber, a portable compactdisc read-only memory (CD-ROM), an optical storage device, a magneticstorage device, or any suitable combination of the foregoing. In thecontext of this document, a computer-readable storage medium may be anytangible medium that can contain, or store a program for use by or inconnection with an instruction execution system, apparatus, or device.

A computer-readable signal medium may include a propagated data signalwith computer-readable program code embodied therein, for example, inbaseband or as part of a carrier wave. Such a propagated signal may takeany of a variety of forms, including, but not limited to,electro-magnetic, optical, or any suitable combination thereof. Acomputer-readable signal medium may be any computer-readable medium thatis not a computer-readable storage medium and that can communicate,propagate, or transport a program for use by or in connection with aninstruction execution system, apparatus, or device.

Program code embodied on a computer-readable medium may be transmittedusing any appropriate medium, including but not limited to wireless,wireline, optical fiber cable, RF, etc., or any suitable combination ofthe foregoing.

Computer program code for carrying out operations for aspects of thepresent invention may be written in any combination of one or moreprogramming languages, including an object oriented programming languagesuch as Java (note: the term(s) “Java” may be subject to trademarkrights in various jurisdictions throughout the world and are used hereonly in reference to the products or services properly denominated bythe marks to the extent that such trademark rights may exist),Smalltalk, C++ or the like and conventional procedural programminglanguages, such as the “C” programming language or similar programminglanguages. The program code may execute entirely on a user's computer,partly on the user's computer, as a stand-alone software package, partlyon the user's computer and partly on a remote computer or entirely onthe remote computer or server. In the latter scenario, the remotecomputer may be connected to the user's computer through any type ofnetwork, including a local area network (LAN) or a wide area network(WAN), or the connection may be made to an external computer (forexample, through the Internet using an Internet Service Provider).

Aspects of the present invention are described below with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems) and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer program instructions. These computer program instructions maybe provided to a processor of a general purpose computer, specialpurpose computer, or other programmable data processing apparatus toproduce a machine, such that the instructions, which execute via theprocessor of the computer or other programmable data processingapparatus, create means for implementing the functions/acts specified inthe flowchart and/or block diagram block or blocks.

These computer program instructions may also be stored in acomputer-readable medium that can direct a computer, other programmabledata processing apparatus, or other devices to function in a particularmanner, such that the instructions stored in the computer-readablemedium produce an article of manufacture including instructions whichimplement the function/act specified in the flowchart and/or blockdiagram block or blocks.

The computer program instructions may also be loaded onto a computer,other programmable data processing apparatus, or other devices to causea series of operational steps to be performed on the computer, otherprogrammable apparatus or other devices to produce acomputer-implemented process such that the instructions which execute onthe computer or other programmable apparatus provide processes forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks.

An embodiment of a possible hardware and software environment forsoftware and/or methods according to the present invention will now bedescribed in detail with reference to the Figures. FIGS. 1, 2A and 2Bcollectively make up a functional block diagram illustrating variousportions of networked computers system 100, including: server computersub-system (that is, a portion of the larger computer system that itselfincludes a computer) 102; smart phone sub-system 104; smart phoneaccelerometer 105; dedicated computer sub-system 106; embeddedaccelerometer 107; desktop computer sub-system 108; externalaccelerometer 109; desktop computer sub-system 110; external wirelessaccelerometer 111; communication network, or cloud, 114; server computer200; communication unit 202; processor set 204; input/output (i/o) unit206; memory device 208; persistent storage device 210; display device212; external device set 214; random access memory (RAM) devices 230;cache memory device 232; program 240; smart phone 250; communicationunit 252; processor set 254; input/output (i/o) unit 256; memory device258; persistent storage device 260; display device 262; external deviceset 264, including smart phone accelerometer 105; random access memory(RAM) devices 270; cache memory device 272; and program 280.

As shown in FIG. 2A, server computer sub-system 102 is, in manyrespects, representative of the various computer sub-system(s) in thepresent invention. Accordingly, several portions of computer sub-system102 will now be discussed in the following paragraphs.

Server computer sub-system 102 may be a laptop computer, tabletcomputer, netbook computer, personal computer (PC), a desktop computer,a personal digital assistant (PDA), a smart phone, or any programmableelectronic device capable of communicating with the client sub-systemsvia network 114. Program 240 is a collection of machine readableinstructions and/or data that is used to create, manage and controlcertain software functions that will be discussed in detail, below, inthe First Embodiment sub-section of this Detailed Description section.

Server computer sub-system 102 is capable of communicating with othercomputer sub-systems via network 114 (see FIG. 1). Network 114 can be,for example, a local area network (LAN), a wide area network (WAN) suchas the Internet, or a combination of the two, and can include wired,wireless, or fiber optic connections. In general, network 114 can be anycombination of connections and protocols that will supportcommunications between server and client sub-systems.

It should be appreciated that FIGS. 1, 2A and 2B, taken together,provide only an illustration of one possible implementation of a systemaccording to the present invention and shall not be taken to imply anylimitations with regard to other possible implementations. Manymodifications to the depicted environment may be made, especially withrespect to current and anticipated future advances in cloud computing,distributed computing, smaller computing devices, network communicationsand the like.

As shown in FIG. 2A, server computer sub-system 102 is shown as a blockdiagram with many double arrows. These double arrows (no separatereference numerals) represent a communications fabric, which providescommunications between various components of sub-system 102. Thiscommunications fabric can be implemented with any architecture designedfor passing data and/or control information between processors (such asmicroprocessors, communications and network processors, etc.), systemmemory, peripheral devices, and any other hardware components within asystem. For example, the communications fabric can be implemented, atleast in part, with one or more buses.

Memory 208 and persistent storage 210 are computer-readable storagemedia. In general, memory 208 can include any suitable volatile ornon-volatile computer-readable storage media. It is further noted that,now and/or in the near future: (i) external device(s) 214 may be able tosupply, some or all, memory for sub-system 102; and/or (ii) devicesexternal to sub-system 102 may be able to provide memory for sub-system102.

Program 240 is stored in persistent storage 210 for access and/orexecution by one or more of the respective computer processors 204,usually through one or more memories of memory 208. Persistent storage210: (i) is at least more persistent than a signal in transit; (ii)stores the device on a tangible medium (such as magnetic or opticaldomains); and (iii) is substantially less persistent than permanentstorage. Alternatively, data storage may be more persistent and/orpermanent than the type of storage provided by persistent storage 210.

Program 240 may include both machine readable and performableinstructions and/or substantive data (that is, the type of data storedin a database). In this particular embodiment, persistent storage 210includes a magnetic hard disk drive. To name some possible variations,persistent storage 210 may include a solid state hard drive, asemiconductor storage device, read-only memory (ROM), erasableprogrammable read-only memory (EPROM), flash memory, or any othercomputer-readable storage media that is capable of storing programinstructions or digital information.

The media used by persistent storage 210 may also be removable. Forexample, a removable hard drive may be used for persistent storage 210.Other examples include optical and magnetic disks, thumb drives, andsmart cards that are inserted into a drive for transfer onto anothercomputer-readable storage medium that is also part of persistent storage210.

Communications unit 202, in these examples, provides for communicationswith other data processing systems or devices external to sub-system102, such as smart phone sub-system 104; dedicated computer sub-system106; desktop computer sub-system 108; and desktop computer sub-system110. In these examples, communications unit 202 includes one or morenetwork interface cards. Communications unit 202 may providecommunications through the use of either or both physical and wirelesscommunications links. Any software modules discussed herein may bedownloaded to a persistent storage device (such as persistent storagedevice 210) through a communications unit (such as communications unit202).

I/O interface(s) 206 allows for input and output of data with otherdevices that may be connected locally in data communication with servercomputer 200. For example, I/O interface 206 provides a connection toexternal device set 214. External device set 214 will typically includedevices such as a keyboard, keypad, a touch screen, and/or some othersuitable input device. External device set 214 can also include portablecomputer-readable storage media such as, for example, thumb drives,portable optical or magnetic disks, and memory cards. Software and dataused to practice embodiments of the present invention, for example,program 240, can be stored on such portable computer-readable storagemedia. In these embodiments the relevant software may (or may not) beloaded, in whole or in part, onto persistent storage device 210 via I/Ointerface set 206. I/O interface set 206 also connects in datacommunication with display device 212.

Display device 212 provides a mechanism to display data to a user andmay be, for example, a computer monitor or a smart phone display screen.

The programs described herein are identified based upon the applicationfor which they are implemented in a specific embodiment of theinvention. However, it should be appreciated that any particular programnomenclature herein is used merely for convenience, and thus theinvention should not be limited to use solely in any specificapplication identified and/or implied by such nomenclature.

II. First Embodiment

Preliminary note: The flowchart and block diagrams in the followingFigures illustrate the architecture, functionality, and operation ofpossible implementations of systems, methods and computer programproducts according to various embodiments of the present invention. Inthis regard, each block in the flowchart or block diagrams may representa module, segment, or portion of code, which comprises one or moreexecutable instructions for implementing the specified logicalfunction(s). It should also be noted that, in some alternativeimplementations, the functions noted in the block may occur out of theorder noted in the figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts, or combinations of special purpose hardware andcomputer instructions.

FIG. 3 shows a flow chart 300 depicting a method according to thepresent invention. FIGS. 4A and 4B show server program 240 and smartphone program 280 for performing at least some of the method steps offlow chart 300. This method and associated software will now bediscussed, over the course of the following paragraphs, with extensivereference to FIG. 3 (for the method step blocks) and FIGS. 4A and 4B(for the software blocks).

Processing begins at step S305, where trace accelerometer module 405 ofsmart phone sub-system 104 collects acceleration data and any referenceposition(s) data from tracing accelerometer 105 along a path on thesurface of an object in space. For example, accelerometer 105 (which ispart of and mechanically rigidly connected to the rest of smart phonesub-system 104) is manipulated by a user (not shown) to trace paths onthe surface of a femur bone of a dinosaur. As the femur is traced,accelerometer device 105 sends raw data to module 405, module 405collects the acceleration history of the accelerometer device, and thepaths are traced. The traced path may have any sort of path geometryincluding: (i) a straight line; (ii) a conic section; (iii) a higherdegree curve; and/or (iv) a combination of curves.

In addition to the acceleration history, module 405 determines at leastone reference position for each path so that the traced paths are“located paths” that are located and/or angularly oriented in spacerelative to each other. This is helpful in creating a 3D model, and thedetermination of reference positions will be further discussed, below,in the Further Comment(s) and/or Embodiment(s) sub-section of thisDetailed Description section.

Alternatively, some embodiments of the present invention may userelative paths, although these relative paths would eventually need tobe located and angularly in space, relative to each other, in order tobuild a 3D model. For example, in one alternative embodiment, a humanuser would locate and orient multiple relative paths to form the 3Dmodel. As another example of a relative path type embodiment, if asingle path includes a trace over substantially the entire outer surfaceof the physical object to be modeled (and assuming that the physicalobject remains stationary over the course of the comprehensive trace),then no reference position(s) are necessarily needed to create a 3Dmodel.

In this embodiment, the beginning and end of the tracing of step S305 isprovided by a human user. For example, the start and end of the tracemay be indicated by touching a “button” on a touchscreen of the smartphone into which the accelerometer is built. Alternatively, thebeginning and end of the tracing could be detected automatically bysoftware and/or hardware, such as by determining the beginning and endof the tracing motion of the accelerometer by determining automaticallywhen the accelerometer comes into, and subsequently loses contact (or atleast very close proximity) with the traced object.

In this embodiment, the user performs the tracing. However, in someembodiments the tracing motion may be provided by robotic hardware. (Seedefinition, below, of “user” in the Definitions sub-section of thisDetailed Description section.)

Processing proceeds to step S310, where acceleration-based path module410 of smart phone sub-system 104 saves acceleration history andlocation reference position data, generated at step S305, as an“acceleration-based path data set.” The data set is called accelerationbased because it is at least substantially based upon acceleration typemotion data, as opposed to being based primarily and directly ondetected position data, detected velocity data and/or other types ofdata upon which a path in space might be based.

Embodiments of the present disclosure that use acceleration data mayhave one, or more, of the following advantages: (i) accelerometers arecheaper than comparable devices, such as those measuring velocity; (ii)when acceleration data is combined with the starting position data andtime stamps, the detected position can be more accurate than othermeans; (iii) the acceleration data is typically available in smartdevices, so many embodiments of the present invention do not requireadditional software installation to operate; (iv) ongoing adoption ofaccelerometers in mass-production environments (such as smart phones andvideo game controllers); (v) continuing mass production ofaccelerometers likely to lead to further, future cost decreases; and/or(vi) continuing mass production of accelerometers likely to lead tofurther, future advances in accelerometer technology (for example,better accuracy, better precision, reliability, smaller hardware,improved software control).

Processing proceeds to step S315, where more paths module 415 of smartphone sub-system 104 determines whether another acceleration-based pathdata set is to be created. The determination may be based on variousfactors including, but not limited to: (i) user input indicating thatanother path is being traced; (ii) user input indicating that anotherpath will be traced; (iii) user input indicating that no more paths willbe traced; or (iv) a previously received total number of paths to betraced. If another acceleration-based path data set will be created,processing returns to step S305, where trace accelerometer module 405collects acceleration history and any reference position(s) data bytracing another path on the surface of the object.

If no additional acceleration path data sets will be created, processingproceeds to step S320, where convert acceleration-based path module 420of the server computer sub-system receives (over network 114, seeFIG. 1) and then converts the acceleration-based path data set(s) toposition-based path data set(s). Server computer 200 and smart phone 250communicate through network 114, whether a cloud network or other formof network, via communication units 202 and 252. Module 415 providesacceleration-based path data set(s) to the convert acceleration-basedpath module. Conversion of the acceleration-based data set(s) toposition-based data set(s) is discussed in more detail below. Additionalmethods of conversion should also be known to persons of ordinary skillin the art.

Processing proceeds to step S325, where make 3D object model module 425,of the server computer sub-system, processes the position-based pathdata set(s) to create a 3D object model. When the acceleration-basedpath data set is converted to a position-based path data set, aposition-based 3D mesh can be constructed. If the position-based pathdata set includes reference position(s) data, the 3D mesh will placeeach 3D path in proper spatial relationship with the other 3D paths.Alternatively, manual manipulation of the relative paths may addrelative location information while the 3D mesh is manually created.Examples of software that creates 3D models from position-based pathdata set(s) include: (i) AutoCAD; (ii) ProEngineer; and (iii) SolidWorks. (Note: the term(s) “AutoCAD,” “ProEngineer,” and/or “Solid Works”may be subject to trademark rights in various jurisdictions throughoutthe world and are used here only in reference to the products orservices properly denominated by the marks to the extent that suchtrademark rights may exist.)

Processing proceeds to step S330, where use 3D object model module 430,of the server computer sub-system, provides the 3D model to programs ascalled upon for the model. For example, the 3D model of the dinosaurfemur may be called upon by a program to determine characteristics ofthe corresponding dinosaur, such as: (i) species; (ii) height; (iii)age; and/or (iv) weight.

Modules 420, 425, and 430 are shown as part of server program 240. Itshould be noted that this is just one embodiment where the computingpower of the server is advantageously used. In the illustratedconfiguration, the smart phone is not burdened with high-memoryactivities such as: (i) converting the acceleration-based path dataset(s) to position-based data set(s); (ii) storing the 3D model; and/or(iii) manipulating the 3D model.

III. Further Comments and/or Embodiments

Some embodiments of the present invention provide a cost effective andeasy-to-use alternative to available 3D modeling solutions, such as 3Dscanners.

Some embodiments of the present invention provide a method for a user tomake easy, accurate and reliable 3D models with smart devices. Further,some embodiments of the present invention use cloud computing on the 3Dmodel to take advantage of creative uses of distributed computing. Someexamples of such uses are discussed below.

Some embodiments of the present invention use smart mobile devices tocreate accurate 3D models, which can be used for various purposes. Thesemodels can then be shared with the cloud, in order to do various formsof computation. Alternatively, the data points obtained by the smartdevice may be transferred to 3D rendering software available in thecloud. Alternatively, data points obtained in different geographiclocations may be uploaded to the cloud and combined to form a single 3Dimage comprising data from both locations. For example, two componentsof an assembly may be uploaded from different production facilities for3D printing and assembly.

Some embodiments of the present invention provide an easy way toaccurately record the scale of the object being modeled.

Some embodiments of the present invention use simple techniques and acombination of information to create accurate and reliable 3D modelsthat provide additional insight, such as: (i) perimeters of odd shapedobjects; and/or (ii) object volume estimates. Once a model is generated,this model can be shared with the cloud for various computationalpurposes.

Some embodiments of the present invention include one or more of thefollowing: (i) a smart phone, tablet, or other smart device; (ii) anaccelerometer, gyroscope, tiltmeter (or inclinometer) or equivalent;(iii) a touch screen; (iv) internal computation; an attachment thatallows for functionality similar to the touch screen; (v) an attachmentthat allows for sonar-like 3D modeling methods; and/or (vi) availablecloud computing.

Some embodiments of the present invention provide a method for scanninga 3D model, including the steps of: (i) place the smart device on theobject to be scanned; (ii) place a finger on the touch screen; (iii)calculate the starting point with X, Y, Z coordinates (i.e. the point inspace where the finger is placed); (iv) slide the device along thesurface of the object, while keeping the finger still (in effectdragging the finger along the surface of the touch screen, except it isthe device that is moving, not the finger); (v) responsive to the fingerreaching the edge of the device, pick up the finger; (vi) place thefinger on another spot on the touch screen; (vii) calculate the nextpoint in space with X,Y,Z coordinates with reference to the startingpoint; (viii) slide the device along the surface of the object, whilekeeping the finger still; (ix) repeat steps (v)-(viii) until enoughsamples are taken to create a 3D mesh representing the object.

Some embodiments of the present invention provide a ruler applicationthat can be created by using the length of the touch screen and draggingmotion of the device under the user's finger to get a good idea on thelength of objects and capturing information provided by theaccelerometer, such as detecting the angle and/or position of the smartdevice. The accelerometer information provides the direction that thedevice moves as the finger slides across the screen, or as an attachmentmoves with the device. While dragging a finger, or using an attachment,information about distance is captured and sample points are generated.At the same time, information about the position of the device is alsocaptured and stored with each of these sample points inthree-dimensional space. More sample points yield more accurate models.Once enough sample points have been obtained, a 3D model can begenerated by extrapolation and other common methods. The model can thenbe used, for its intended purpose.

Some embodiments of the present invention provide that once a model isgenerated, the model can be shared with the cloud for variouscomputational purposes. For example, consider calculating the volume ofa complex 3D shape, such as an irregular shaped swimming pool, todetermine how much pool chemicals to add to it. The odd shape would makeit difficult for someone to accurately estimate volume of the pool byhand. However using our invention, they would be able to obtain anaccurate estimate, in a short period of time.

Some embodiments of the present invention interface with computer aideddesign (CAD) integrator products. CAD integrators maintain blueprintdrawings of buildings having architectural data down to the individualspace and various assets in the space level. A space can be in the formof a room, cubicle, open area, hallway, lobby, or any other area. Someembodiments of the present invention recognize that a problem may existin obtaining accurate profiles for placement of assets like desks,chairs, and other furniture in the spaces. For example, FIG. 5 shows howoffice chair 505 may be traced to produce top view 510 for placement ina 2D office layout. By using the mobile device, the 3D shape of theasset, such as the office chair can be captured, then transformed into a2D perimeter to be placed in the CAD drawing.

This would be useful when taking inventory of assets, and placing theminto the drawing. By storing the 3D models and/or data files in thecloud, the 3D shapes could be accessed and transformed into the 2Dperimeter to be placed in CAD drawings at a remote site based on thelocation-based services of the mobile device when the physical object isscanned.

Some embodiments of the present invention have health and/or medicalindustry applications. For example, measuring portions of the human bodymay provide useful information to doctors for use in medical analysis.

Some embodiments of the present invention offer online retail andcommerce applications. For example, online retailers could takeadvantage of measurements of the human body to determine proper apparelsizes. Online retailers will benefit from a clothing size applicationbecause there are no physical locations for customers to try on apparel.One way that online retailers attract business is to offer free returnshipping for items purchased online, but don't fit when they reach thecustomer. If clothing size is determined using the customer's smartphone the cost of returning the incorrect size apparel would besignificantly reduced.

Some embodiments of the present invention provide a hardware attachmentto smart devices, which can be used for measuring the distance of 3Dsurfaces. Hardware attachments include, but are not limited to: (i)mouse ball(s) and the like; (ii) laser scanner(s); (iii) sonartechniques.

Some embodiments of the present invention measure objects by a userdragging her finger across a smart device's touch screen.

Some embodiments of the present invention take sample points of a 3Dobject by detecting with an accelerometer, the relationship between auser's finger location and the incremental location of the moving smartdevice.

Some embodiments of the present invention create 3D meshes used with 3Dmodeling from the sample points obtained by the accelerometer.

Some embodiments of the present invention use the sample points obtainedby the accelerometer to extrapolate 3D models

Some embodiments of the present invention share sample points obtainedby smart devices with the cloud for cloud computing. In that way, thecomputing power required to generate the 3D model may be in the cloudrather than on the smart device itself.

Some embodiments of the present invention share generated 3D models withthe cloud for cloud computing for the purposes including: (i)calculating the volume of objects; and (ii) calculating the perimeter ofobjects.

Some embodiments of the present invention use 3D models created by smartdevices to transfer clothing sizes to clothing retailers.

Some embodiments of the present invention recognize that 3D printertechnology is a significant advance in “democratization of design,” buttraditional desktop modeling tools do not reach the large audience thatwould use this technology. Mobile devices, however, are ubiquitous andoftentimes include accelerometers and gyroscopes to support applicationssuch as those using global positioning technology. Alternatively, thereare add-on devices for smart phones that offer a lower cost to theconsumer than fully integrated systems.

Some embodiments of the present invention use smart mobile devices tocreate accurate 3D models. The information from smart phone sensors isused to generate vectors outlining an tangible object being “traced.”

Some embodiments of the present invention use double integration todevelop 3D models from the data points generated from smart device data,including, but not limited to: (i) accelerometer data; and (ii)gyroscope data. Oftentimes, 3D models are generated by a set of datapoints that create a wire model, or 3D mesh.

Some embodiments of the present invention create a wire model by: (i)reducing acceleration data to a set of points in 3D; (ii) integratingacceleration to velocity and a time constant; (iii) integrating velocityto a point and a starting point constant; and (iv) determining thestarting point constant by identifying the value of the positionfunction at one point.

Some embodiments of the present invention obtain the followinginformation from the smart device: (i) acceleration; and (ii) time. Twoexample reasons for using acceleration data are: (i) accelerometers arecheaper than comparable devices, such as those measuring velocity; and(ii) when acceleration data is combined with the starting position dataand time stamps, the detected position can be more accurate than othermeans. The point data is determined by the 3D modeling application usingmethods including, but not limited to: (i) input from the user dragginga smart device while holding a finger on the touch screen in a fixedlocation in space; and/or (ii) input from the user while holding anadd-on attachment to smart device.

Some embodiments of the present invention use the following methoddepicted in FIG. 6 to obtain input from the user dragging smart device605 while holding finger 610 on the touch screen 615 in a fixed locationin space: (i) hold the finger stationary at a point in space while incontact with the touch screen; (ii) move the smart device under thestationary finger while maintaining finger contact with the touchscreen; (iii) when the finger reaches an edge of the touch screen, thefinger is repositioned on the touch screen while the smart device isheld stationary. While the user is tracing the surface of the object,the smart device provides the spatial data required for a 3D renderingthrough data communication with an accelerometer and/or gyroscope.

Some embodiments of the present invention use an attachment, such as theattachment shown in FIG. 7, where track ball 705 is attached via anaudio interface to smart phone 710. Alternatively, a sonar emittingdevice may be attached to the smart phone, or a laser scanning devicemay be attached to the smart phone.

Some embodiments of the present invention use a CAD integrator that isstored in cloud for the computation of space assignment.

Some embodiments of the present invention provide a system for rendering3D models of physical objects using a smart phone or tablet whereby thetablet traces contours of the physical object while a user's fingerremains stationary, but in contact with the scanning device, to serve asa point of reference. The contours are constructed via a series ofintegrations from recorded temporally sampled acceleration vectors,using the mobile device's accelerometer. Contours are then piecedtogether to construct a 3D wireframe model.

Some embodiments of the present invention combine data from one or moreof the following: (i) an audio-ball; (ii) a touch screen; (iii) agyroscope; and/or (iv) an accelerometer.

Some embodiments of the present invention combine 2D data from the audioball with 3D data supplied by the accelerometer of the smart device.

Some embodiments of the present invention requires physically touchingthe physical object being drawn with the smart device, such as a smartphone. Physical contact eliminates concerns that arise when photographor other image rendering software is used for objects having reflectivesurfaces, such as chrome automotive bumpers.

IV. Definitions

Present invention: should not be taken as an absolute indication thatthe subject matter described by the term “present invention” is coveredby either the claims as they are filed, or by the claims that mayeventually issue after patent prosecution; while the term “presentinvention” is used to help the reader to get a general feel for whichdisclosures herein that are believed as maybe being new, thisunderstanding, as indicated by use of the term “present invention,” istentative and provisional and subject to change over the course ofpatent prosecution as relevant information is developed and as theclaims are potentially amended.

Embodiment: see definition of “present invention” above—similar cautionsapply to the term “embodiment.”

and/or: non-exclusive or; for example, A and/or B means that: (i) A istrue and B is false; or (ii) A is false and B is true; or (iii) A and Bare both true.

User/subscriber: includes, but is not necessarily limited to, thefollowing: (i) a single individual human; (ii) an artificialintelligence entity with sufficient intelligence to act as a user orsubscriber; and/or (iii) a group of related users or subscribers.

Data communication: any sort of data communication scheme now known orto be developed in the future, including wireless communication, wiredcommunication and communication routes that have wireless and wiredportions; data communication is not necessarily limited to: (i) directdata communication; (ii) indirect data communication; and/or (iii) datacommunication where the format, packetization status, medium, encryptionstatus and/or protocol remains constant over the entire course of thedata communication.

Software storage device: any device (or set of devices) capable ofstoring computer code in a non-transient manner in one or more tangiblestorage medium(s); “software storage device” does not include any devicethat stores computer code only as a signal.

Computer: any device with significant data processing and/or machinereadable instruction reading capabilities including, but not limited to:desktop computers, mainframe computers, laptop computers,field-programmable gate array (fpga) based devices, smart phones,personal digital assistants (PDAs), body-mounted or inserted computers,embedded device style computers, application-specific integrated circuit(ASIC) based devices.

What is claimed is:
 1. A computer program product comprising a computerreadable storage medium having stored thereon: first programinstructions programmed to collect a reference position as a start pointresponsive to a start point indicator; second program instructionsprogrammed to record a time stamp associated with a time when the startpoint indicator was generated; third program instructions programmed tocollect acceleration data generated by an accelerometer by following afirst path on a physical surface of an object with a device in contactwith the physical surface, the device including the accelerometer;fourth program instructions programmed to record a second time stampassociated with a time when an end point indicator is generated; fifthprogram instructions programmed to create a path dataset including theacceleration data, the start point, and the first and second timestamps; sixth program instructions programmed to determine that noadditional path will be followed by receiving a user input indicatingthat no additional paths will be traced; seventh program instructionsprogrammed to convert the path dataset to a position dataset including aset of sequential positions corresponding to positions of the devicewhile following the first path; and eighth program instructionsprogrammed to generate a three-dimensional object model based on theposition dataset, the three-dimensional object model data set includingdata to represent the object as a CAD model; wherein: the device isconfigured to determine the acceleration data and the referenceposition; the start point indicator is generated by a user touching atouch screen of the device; the end point indicator is generated when auser no longer touches the touch screen of the device; and theacceleration data includes acceleration-type motion data.